package grouplife;
use Moose;
use namespace::autoclean;

use Catalyst::Runtime 5.80;

# Set flags and add plugins for the application.
#
# Note that ORDERING IS IMPORTANT here as plugins are initialized in order,
# therefore you almost certainly want to keep ConfigLoader at the head of the
# list if you're using it.
#
#         -Debug: activates the debug mode for very useful log messages
#   ConfigLoader: will load the configuration from a Config::General file in the
#                 application's home directory
# Static::Simple: will serve static files from the application's root
#                 directory

use Catalyst qw/
	-Debug
	ConfigLoader
	Static::Simple

	StackTrace

	Authentication
	Authorization::Roles

	Session
	Session::Store::FastMmap
	Session::State::Cookie
	
	Cache
	PageCache

/;

extends 'Catalyst';

our $VERSION = '0.01';

after 'setup_components' => sub {
  my $app = shift;
  for (keys %{ $app->components }) {
    if($app->components->{$_}->can('initialize_after_setup')){
        $app->components->{$_}->initialize_after_setup($app);
    }
  }
};

# Configure the application.
#
# Note that settings in grouplife.conf (or other external
# configuration file that you set up manually) take precedence
# over this when using ConfigLoader. Thus configuration
# details given here can function as a default configuration,
# with an external configuration file acting as an override for
# local deployment.

__PACKAGE__->config(
    name => 'grouplife',
    # Disable deprecated behavior needed by old applications
    disable_component_resolution_regex_fallback => 1,
);

# Configure SimpleDB Authentication
__PACKAGE__->config->{'Plugin::Authentication'} = {
        default => {
                class           => 'SimpleDB',
                user_model      => 'DB::User',
                password_type   => 'self_check',
        },
};

__PACKAGE__->config(
		'Plugin::PageCache' => {
		expires => 300,
		set_http_headers => 1,
		cache_hook => 'should_cache',
		auto_cache => [
		'/about',
		'/contactus',
		],
		debug => 1
		}
);

sub should_cache {
	my $c = shift;
	return ($c->user_exists) ? 0 : 1;
}

__PACKAGE__->config->{'Plugin::Cache'}{backend} = {
class => "Cache::Memcached",
servers => ['127.0.0.1:11212']
};

# Start the application
__PACKAGE__->setup();


=head1 NAME

grouplife - Catalyst based application

=head1 SYNOPSIS

    script/grouplife_server.pl

=head1 DESCRIPTION

[enter your description here]

=head1 SEE ALSO

L<grouplife::Controller::Root>, L<Catalyst>

=head1 AUTHOR

lijie,,,

=head1 LICENSE

This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.

=cut

1;
